import java.util.Scanner;

public class array {
    public static void out(int b[][],int n){//输出方法
        for (int i = 1; i <= n; i++) {//定义嵌套循环进行输出，从1索引开始
            for (int j = 1; j <= n; j++) {
                System.out.print(b[i][j]+" ");
            }
            System.out.println();
        }
    }
    public static void scan(){
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int a[][]= new int[n+1][n+1];//防止数组溢出
        //二维数组本质就是xy轴
        int i,j,count = 0;
        for (int t = 1;; t++) {// 大循环 让我们里面的上下左右可以一直走到我们要的值
            for (i=t;i<=n-t+1&&count<n*n;i++){
                a[i][n-t+1]=count++;//让i++ 就是让i移动，x往下走
            }//从上到下
            for (j=n-t;j>=t&&count<n*n;j--){
                a[n-t+1][j]=count++;//j--  让j移动  y往左走
            }//从右到左
            for (i=n-t;i>=t&&count<n*n;i--){
               a[i][t]=count++;   //让i-- x往上走
            }//从下到上
            for (j=t+1;j<=n-t&&count<n*n;j++){
                a[t][j]=count++;   //j++  y往右走
            }//从左到右
            if (count>=n*n){// 如果count已经加到我们要的数。那就退出循环
                out(a,n);
                break;
            }
        }
    }

    public static void main(String[] args) {
        scan();
    }
}
